package com.teamide.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class JarEntryUtil {

	public static Map<String, byte[]> read(URL url) {

		Map<String, byte[]> map = new HashMap<String, byte[]>();
		if (null == url) {
			return map;
		}
		JarFile jar = null;
		try {
			// 获取jar
			jar = ((JarURLConnection) url.openConnection()).getJarFile();
			// 从此jar包 得到一个枚举类
			Enumeration<JarEntry> entries = jar.entries();
			// 同样的进行循环迭代
			while (entries.hasMoreElements()) {
				// 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件
				JarEntry entry = entries.nextElement();
				if (entry.isDirectory()) {
					continue;
				}
				String name = entry.getName();
				InputStream stream = jar.getInputStream(entry);
				byte[] bytes = IOUtil.read(stream);
				map.put(name, bytes);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			IOUtil.close(jar);
		}
		return map;
	}
}
